/**
 * 将字节数转换为合适的单位（B, KB, MB, GB 等）
 * @param {number} bytes - 字节数
 * @param {number} [decimalPlaces=2] - 小数位数，默认为2
 * @returns {string} - 格式化后的字符串
 */
export default function formatBytes(bytes, decimalPlaces = 2) {
    if (bytes < 0) {
        throw new Error("字节数不能为负数");
    }
    if (bytes === 0) {
        return "0 B";
    }

    const k = 1024;
    const dm = decimalPlaces < 0 ? 0 : decimalPlaces;
    const sizes = ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];

    const i = Math.floor(Math.log(bytes) / Math.log(k));

    return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + sizes[i];
}